package 我的Java学习_算法基础.day_01;

public class 出现1次与出现k次 {
    public static void main(String[] args) {
        int[] arr ={2,2,2,9,7,7,7,3,3,3,6,6,6,0,0,0};
        int len = arr.length;
        char[][] kRadix = new char[len][];
        int k =3;
        int maxLen=0;
        //转换成k进制字符数组
        //对于每个数字
        for (int i = 0;i<len;i++){
            //求每个数字的三进制 字符串并翻转，然后转为字符数组
            //翻转：长度可能不一致，为保证对应位对齐
            kRadix[i]=new StringBuilder(Integer.toString(arr[i],k)).reverse().toString().toCharArray();
            if(kRadix[i].length>maxLen)
                maxLen=kRadix.length;   //标记最长长度
        }
        int[] resArr = new int[maxLen];
        for(int i =0 ;i<len;i++){
            for(int j = 0;j<maxLen;j++){
                if(j>= kRadix[i].length){
                    resArr[j]+=0;
                }else{
                    resArr[j]+=(kRadix[i][j]-'0');
                }
            }
        }
        int res = 0;
        for(int i = 0;i < maxLen;i++){
            //不进位加法
            res+=(resArr[i]%k)*(int)(Math.pow(k,i));
        }
        System.out.println(res);
    }
}
